//封装axios的工具函数
import { message } from "antd"
import axios from "axios"
import history from "./history"
import { getToken } from "./storage"

export const baseURL="http://geek.itheima.net"
const instance = axios.create({
    baseURL,
    timeout: 5000,
})

//请求拦截器
instance.interceptors.request.use(
    function(config){
        //判定有没有token,有的话加上在请求里面加上token
       if(getToken()){
         config.headers.Authorization =`Bearer ${getToken()}` 
    }
    return config
    },
    function(error){
        return Promise.reject(error)
    }
)

//响应拦截器
instance.interceptors.response.use(
    function(response){
        return response.data
    },
    function(error){
        //统一处理401token过期的情况
        //获取error对象
        if(error.response.status===401){
            //提示用户
            message.warning(error.response.data.message)
            //跳转登录页
            // window.location.href='/login'   不推荐使用window进行跳转   强制刷新浏览器,可能会造成白屏的情况
            //我们可以通过改造history的方法来进行跳转
            //1.在utils里面创建history.js文件
            //2.引入createBrowserHistory (react-dom里面本就有配置)
            //3.通过createBrowserHistory 创建history并导出
            //4.在app.js引入history.js手动组装BrowserRouter BrowserRouter = Router组件 + history  不引入BrowserRouter改为引入Router并给它分配history属性
            //在本文件引入history.js并使用
            history.push('/login')
        }
        return Promise.reject(error)
    }
)

export default instance